#ifndef __SE_SOCKET_ADDRESS_HPP__
#define __SE_SOCKET_ADDRESS_HPP__

#include <netinet/in.h>
#include <string>

namespace se {

// 套接口地址类
class SocketAddress {
public:
    SocketAddress(const char *ip, unsigned short port);
    explicit SocketAddress(const struct sockaddr_in &address);

    /**
     * @brief 获取IP地址
     * 
     * @return std::string 
     */
    std::string getIp() const;

    /**
     * @brief 获取端口号
     * 
     * @return unsigned short 
     */
    unsigned short getPort() const;

    /**
     * @brief 获取地址的 sockaddr_in * 形式，有些库函数需要 sockaddr_in *形式的地址
     * 
     * @return struct sockaddr_in* 
     */
    struct sockaddr_in *getAddress();

    /**
     * @brief 对象的字符串形式
     * 
     * @return std::string 
     */
    std::string toString() const;
private:
    struct sockaddr_in _address;  // linux原生套接口地址

};

}  // namespace se

#endif